//引入第三方包 express
var express = require('express');

//实例化express
var app = express()

//设置静态资源托管文件夹
//app.use() 注册中间件
//express.static() express内置的一个静态资源托管的中间件
app.use(express.static('jingtai'));

//在所有接口前设置 处理post请求参数的中间件
app.use(express.json());
app.use(express.urlencoded({ extended: false }));

//定义返回给客户端的数据
var arr = [
    { num: '1', bianma: 'abc', chenghao: '董事长', paixu: '1', ingroup: '正常', time: '2022-10-25 17:30:40'},
    { num: '2', bianma: 'efg', chenghao: '项目经理', paixu: '2', ingroup: '正常', time: '2022-10-25 17:30:47'},
    { num: '3', bianma: 'hrg', chenghao: '人力资源', paixu: '3', ingroup: '异常', time: '2022-10-25 17:31:04'},
    { num: '4', bianma: 'klm', chenghao: '产品经理', paixu: '4', ingroup: '正常', time: '2022-10-25 17:31:21'},
    { num: '5', bianma: 'opq', chenghao: '普通员工', paixu: '5', ingroup: '正常', time: '2022-10-25 17:31:39'}
]
//分页(查询)
app.get('/user/list', (req, res) => {
    //req 请求对象, 包含了和本次请求相关的所有信息( 请求地址,请求方式,携带的参数 )
    console.log('请求成功')
    //res 响应对象, 可以借助res向客户端返回信息( 字符串, json格式数据, 网页 )

    // //获取get类型请求的参数: req.query 
    var { page, count } = req.query;

    // //分页
    // //slice(0,10) 取前10个  
    // //slice(10,20) 取第11-20个  
    // //slice(20,30) 取第21-30个  
    var newarr = arr.slice((page - 1) * count, page * count);
    //返回数据
    res.send({ code: 200, msg: '请求成功!', list: newarr ,total:arr.length});

})

//登陆
app.post('/user/login', (req, res) => {

    //想要接收post类型请求的参数 必须提前设置能解析post请求参数的中间件 express.json 和 express.urlencoded 
    var { phone, pass } = req.body;

    //用来自客户端的数据 做判断, 判断是否在服务端的用户列表中
    var i = arr.findIndex((item, index) => {
        return item.phone == phone && item.pass == pass;
    })

    //如果i不是-1, 说明来自客户端的数据是合法的.
    if (i != -1) {
        //登陆成功时, 可以一并返回 登陆成功的用户信息,登陆令牌
        res.send({ code: 200, msg: '登陆成功!', userinfo: arr[i], token: '' });
    } else {
        res.send({ code: 400, msg: '登陆失败!' });
    }
})

//接收前端搜索框传来的参数做处理
//模糊搜索
app.get('/user/search', (req, res) => {
    //接收参数
    var { btnkey } = req.query;
    console.log(req.query)
    //根据参数,从用户的name属性中过滤
    var newarr = arr.filter((item) => {
        //indexOf() 返回的是下标, 没找到返回-1
        //return item.name.indexOf(searchkey) != -1
        //includes() 返回true/false
        //return item.name.includes(searchkey)
        return new RegExp(btnkey).test(item.name)
    })
    //返回数据
    res.send({ code: 200, msg: '查询成功!', list: newarr })
})


app.listen(8484, () => {
    console.log('服务端运行在: http://localhost:8484');
})
